package com.ezops.poc.bo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.ezops.poc.validations.TradeIndentifier;
import com.ezops.poc.validations.result.ValidationResult;

public class EzopsOTStaticModel implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	protected double accrual;

	protected String action;

	protected String bookId;

	protected String buySell;

	protected String partyId;

	protected double price;

	protected String priceType;

	protected String productAccountingType;

	protected Date productContractMaturity;

	protected double productCouponRate;

	protected String productCurrency;

	protected String productCurrencyPair;

	protected String productCusip;

	protected String productDescription;

	protected String productIsin;

	protected double productNotional;

	protected Date productPayLegEndDate;

	protected String productPayLegNotionalCurrency;

	protected String productPayLegPaymentFrequency;

	protected String productPayLegRateIndex;

	protected String productPayLegRateIndexTenor;

	protected String productPayLegStartDate;

	protected String productPricingType;

	protected double productPrimaryAmount;

	protected double productQuatingAmount;

	protected String productReceiveLegEndDate;

	protected String productReceiveLegFixingMarketPlaces;

	protected String productReceiveLegNotionalCurrency;

	protected String productReceiveLegPaymentFrequency;

	protected String productReceiveLegRateIndex;

	protected String productReceiveLegRateIndexTenor;

	protected Date productReceiveLegStartDate;

	protected String productSedol;

	protected String productTickerSymbol;

	protected double quantity;

	protected String settleAmount;

	protected String settleCurrency;

	protected Date settlementDate;

	protected String status;

	protected Date tradeTime;
	
	protected String productType;


	protected Date tradingDay;
	protected String errorMessage;
	public String fileName;
	protected int clientId;
	protected int assetId;
	protected int ezOpsId;
	protected int clientTradeId;

	protected List<ValidationResult> exceptions;

	public TradeIndentifier getIdentifier() {
		TradeIndentifier identifier = new TradeIndentifier();
		identifier.setAction(this.getAction());
		identifier.setClientTradeId(this.getClientTradeId());
		identifier.setFileName(this.getFileName());
		identifier.setStatus("valid");
		identifier.setClientId(this.getClientId());
		identifier.setAssetId(this.getAssetId());
		identifier.setEzopsId(this.ezOpsId);
		return identifier;
	}

	public void addException(String fieldName, String errorMessage, String fieldValue) {
		if (this.exceptions == null)
			this.exceptions = new ArrayList<>();
		ValidationResult result = ValidationResult.getErrorResponse(fieldName,
				errorMessage,fieldValue);
		exceptions.add(result);
	}

	public List<ValidationResult> getErrors() {
		return exceptions;
	}

	public double getAccrual() {
		return accrual;
	}

	public void setAccrual(double accrual) {
		this.accrual = accrual;
	}

	public String getAction() {
		return action;
	}

	public void setAction(String action) {
		this.action = action;
	}

	public String getBookId() {
		return bookId;
	}

	public void setBookId(String bookId) {
		this.bookId = bookId;
	}

	public String getBuySell() {
		return buySell;
	}

	public void setBuySell(String buySell) {
		this.buySell = buySell;
	}

	public String getPartyId() {
		return partyId;
	}

	public void setPartyId(String partyId) {
		this.partyId = partyId;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public String getPriceType() {
		return priceType;
	}

	public void setPriceType(String priceType) {
		this.priceType = priceType;
	}

	public String getProductAccountingType() {
		return productAccountingType;
	}

	public void setProductAccountingType(String productAccountingType) {
		this.productAccountingType = productAccountingType;
	}

	public Date getProductContractMaturity() {
		return productContractMaturity;
	}

	public void setProductContractMaturity(Date productContractMaturity) {
		this.productContractMaturity = productContractMaturity;
	}

	public double getProductCouponRate() {
		return productCouponRate;
	}

	public void setProductCouponRate(double productCouponRate) {
		this.productCouponRate = productCouponRate;
	}

	public String getProductCurrency() {
		return productCurrency;
	}

	public void setProductCurrency(String productCurrency) {
		this.productCurrency = productCurrency;
	}

	public String getProductCurrencyPair() {
		return productCurrencyPair;
	}

	public void setProductCurrencyPair(String productCurrencyPair) {
		this.productCurrencyPair = productCurrencyPair;
	}

	public String getProductCusip() {
		return productCusip;
	}

	public void setProductCusip(String productCusip) {
		this.productCusip = productCusip;
	}

	public String getProductDescription() {
		return productDescription;
	}

	public void setProductDescription(String productDescription) {
		this.productDescription = productDescription;
	}

	public String getProductIsin() {
		return productIsin;
	}

	public void setProductIsin(String productIsin) {
		this.productIsin = productIsin;
	}

	public double getProductNotional() {
		return productNotional;
	}

	public void setProductNotional(double productNotional) {
		this.productNotional = productNotional;
	}

	public Date getProductPayLegEndDate() {
		return productPayLegEndDate;
	}

	public void setProductPayLegEndDate(Date productPayLegEndDate) {
		this.productPayLegEndDate = productPayLegEndDate;
	}

	public String getProductPayLegNotionalCurrency() {
		return productPayLegNotionalCurrency;
	}

	public void setProductPayLegNotionalCurrency(
			String productPayLegNotionalCurrency) {
		this.productPayLegNotionalCurrency = productPayLegNotionalCurrency;
	}

	public String getProductPayLegPaymentFrequency() {
		return productPayLegPaymentFrequency;
	}

	public void setProductPayLegPaymentFrequency(
			String productPayLegPaymentFrequency) {
		this.productPayLegPaymentFrequency = productPayLegPaymentFrequency;
	}

	public String getProductPayLegRateIndex() {
		return productPayLegRateIndex;
	}

	public void setProductPayLegRateIndex(String productPayLegRateIndex) {
		this.productPayLegRateIndex = productPayLegRateIndex;
	}

	public String getProductPayLegRateIndexTenor() {
		return productPayLegRateIndexTenor;
	}

	public void setProductPayLegRateIndexTenor(
			String productPayLegRateIndexTenor) {
		this.productPayLegRateIndexTenor = productPayLegRateIndexTenor;
	}

	public String getProductPayLegStartDate() {
		return productPayLegStartDate;
	}

	public void setProductPayLegStartDate(String productPayLegStartDate) {
		this.productPayLegStartDate = productPayLegStartDate;
	}

	public String getProductPricingType() {
		return productPricingType;
	}

	public void setProductPricingType(String productPricingType) {
		this.productPricingType = productPricingType;
	}

	public double getProductPrimaryAmount() {
		return productPrimaryAmount;
	}

	public void setProductPrimaryAmount(double productPrimaryAmount) {
		this.productPrimaryAmount = productPrimaryAmount;
	}

	public double getProductQuatingAmount() {
		return productQuatingAmount;
	}

	public void setProductQuatingAmount(double productQuatingAmount) {
		this.productQuatingAmount = productQuatingAmount;
	}

	public String getProductReceiveLegEndDate() {
		return productReceiveLegEndDate;
	}

	public void setProductReceiveLegEndDate(String productReceiveLegEndDate) {
		this.productReceiveLegEndDate = productReceiveLegEndDate;
	}

	public String getProductReceiveLegFixingMarketPlaces() {
		return productReceiveLegFixingMarketPlaces;
	}

	public void setProductReceiveLegFixingMarketPlaces(
			String productReceiveLegFixingMarketPlaces) {
		this.productReceiveLegFixingMarketPlaces = productReceiveLegFixingMarketPlaces;
	}

	public String getProductReceiveLegNotionalCurrency() {
		return productReceiveLegNotionalCurrency;
	}

	public void setProductReceiveLegNotionalCurrency(
			String productReceiveLegNotionalCurrency) {
		this.productReceiveLegNotionalCurrency = productReceiveLegNotionalCurrency;
	}

	public String getProductReceiveLegPaymentFrequency() {
		return productReceiveLegPaymentFrequency;
	}

	public void setProductReceiveLegPaymentFrequency(
			String productReceiveLegPaymentFrequency) {
		this.productReceiveLegPaymentFrequency = productReceiveLegPaymentFrequency;
	}

	public String getProductReceiveLegRateIndex() {
		return productReceiveLegRateIndex;
	}

	public void setProductReceiveLegRateIndex(String productReceiveLegRateIndex) {
		this.productReceiveLegRateIndex = productReceiveLegRateIndex;
	}

	public String getProductReceiveLegRateIndexTenor() {
		return productReceiveLegRateIndexTenor;
	}

	public void setProductReceiveLegRateIndexTenor(
			String productReceiveLegRateIndexTenor) {
		this.productReceiveLegRateIndexTenor = productReceiveLegRateIndexTenor;
	}

	public Date getProductReceiveLegStartDate() {
		return productReceiveLegStartDate;
	}

	public void setProductReceiveLegStartDate(Date productReceiveLegStartDate) {
		this.productReceiveLegStartDate = productReceiveLegStartDate;
	}

	public String getProductSedol() {
		return productSedol;
	}

	public void setProductSedol(String productSedol) {
		this.productSedol = productSedol;
	}

	public String getProductTickerSymbol() {
		return productTickerSymbol;
	}

	public void setProductTickerSymbol(String productTickerSymbol) {
		this.productTickerSymbol = productTickerSymbol;
	}

	public double getQuantity() {
		return quantity;
	}

	public void setQuantity(double quantity) {
		this.quantity = quantity;
	}

	public String getSettleAmount() {
		return settleAmount;
	}

	public void setSettleAmount(String settleAmount) {
		this.settleAmount = settleAmount;
	}

	public String getSettleCurrency() {
		return settleCurrency;
	}

	public void setSettleCurrency(String settleCurrency) {
		this.settleCurrency = settleCurrency;
	}

	public Date getSettlementDate() {
		return settlementDate;
	}

	public void setSettlementDate(Date settlementDate) {
		this.settlementDate = settlementDate;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public Date getTradeTime() {
		return tradeTime;
	}

	public void setTradeTime(Date tradeTime) {
		this.tradeTime = tradeTime;
	}

	public Date getTradingDay() {
		return tradingDay;
	}

	public void setTradingDay(Date tradingDay) {
		this.tradingDay = tradingDay;
	}

	public String getErrorMessage() {
		return errorMessage;
	}

	public void setErrorMessage(String errorMessage) {
		this.errorMessage = errorMessage;
	}

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public int getClientId() {
		return clientId;
	}

	public void setClientId(int clientId) {
		this.clientId = clientId;
	}

	public int getAssetId() {
		return assetId;
	}

	public void setAssetId(int assetId) {
		this.assetId = assetId;
	}

	public int getEzOpsId() {
		return ezOpsId;
	}

	public void setEzOpsId(int ezOpsId) {
		this.ezOpsId = ezOpsId;
	}

	public int getClientTradeId() {
		return clientTradeId;
	}

	public void setClientTradeId(int clientTradeId) {
		this.clientTradeId = clientTradeId;
	}

	public String getProductType() {
		return productType;
	}

	public void setProductType(String productType) {
		this.productType = productType;
	}

}
